1
Di Luar Operasi Elemen per Elemen: Perpindahan ke Operasi Matriks Berbasis Keping
AI023Lesson 9
00:00

Pada pelajaran sebelumnya, kita fokus pada operasi elemen per elemen (seperti ReLU dasar pada matriks). Operasi ini adalah terbatas oleh memori karena GPU menghabiskan lebih banyak waktu untuk memindahkan data dari HBM ke register daripada melakukan perhitungan matematika.

1. Mengapa GEMM Sangat Penting

Perkalian Matriks Umum (GEMM) memiliki kompleksitas komputasi $O(N^3)$ sementara hanya membutuhkan akses memori $O(N^2)$. Ini memungkinkan kita menyembunyikan latensi memori di balik throughput aritmetika yang sangat besar, menjadikannya "jantung" dari model bahasa besar (LLMs).

2. Representasi Memori 2 Dimensi

RAM fisik bersifat 1 dimensi. Untuk merepresentasikan tensor 2 dimensi, kita menggunakan Stride. Kesalahan umum dalam produksi adalah mengasumsikan bahwa tensor bersifat kontinu. Jika Anda keliru menggabungkan stride baris dan kolom dalam perhitungan pointer Anda, Anda akan mengakses data "bayangan" atau memicu pelanggaran memori.

3. Generalisasi Berbasis Keping

Triton memperluas logika elemen per elemen dengan beralih dari pointer tunggal ke blok pointer. Dengan menggunakan keping 2 dimensi (misalnya $16 \times 16$), kita memanfaatkan penggunaan kembali data di SRAM berkecepatan tinggi, menjaga data tetap "panas" untuk operasi gabungan seperti penambahan bias atau aktivasi sebelum menulis kembali ke Memori Global.

Susunan Linier 1DSusunan Berkeping 2D
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>